home *** CD-ROM | disk | FTP | other *** search
Text File | 1980-01-06 | 53.6 KB | 2,608 lines |
-
- *******************- OUTCAST PACK MAG CODE (C) PHIL!95/NEO -*****************
-
- section outcastcode,code_c
-
- incdir 'scene1:coding/asm/demos/exsyslib/'
- include 'include/hardware/exsys_takeover.s' ;1st codeline!
-
- Incdir scene1:coding/asm/demos/outcastmag/
- move.l _OSVBR(a4),_vbr
-
- start: movem.l a0-a6/d1-d7,-(a7)
- move.l #$dff000,a0
- move.l #restvars,a1
- move.w $1c(a0),orig_inten(a1)
- move.w $1e(a0),orig_intreq(a1)
- move.w $02(a0),orig_dmacon(a1)
- move.l _vbr,a2
- move.l $6c(a2),orig_lev3(a1)
- move.l $68(a2),orig_lev2(a1)
-
- jsr routine
-
- move.w #$7fff,$dff09a
- move.w #$7fff,$dff09c
- move.w #$7fff,$dff096
- move.l #restvars,a1
-
- move.l _vbr,a2
- move.l orig_lev3(a1),$6c(a2)
- move.l orig_lev2(a1),$68(a2)
- move.w orig_inten(a1),d0
- move.w orig_dmacon(a1),d1
- move.w orig_intreq(a1),d2
- ori.w #$c000,d0
- move.w d0,$dff09a
- ori.w #$8000,d1
- move.w d1,$dff096
- ori.w #$8000,d2
- move.w d2,$dff09c
-
- Move.l $4,a6 ;restore system
- move.l #gfx_text,a1
- moveq #0,d0
- jsr -$228(a6)
- addi.l #$26,d0
- move.l d0,a0
- * move.l (a0),$dff080
- * clr.w $dff088
-
- movem.l (a7)+,a0-a6/d1-d7
- moveq #0,d0
- bsr loadexe
- moveq #0,d0
- bra start
-
- _vbr: dc.l 0
-
- gfx_text dc.b "graphics.library",0
- even
-
- restvars dcb.w $8,0
-
- orig_inten equ $0
- orig_intreq equ $2
- orig_dmacon equ $4
- orig_lev3 equ $6
- orig_lev2 equ $a
-
- *----------------------------------------------------------------------------
-
- * OUTCAST Variable_Labels *
-
- oldmousex equ 0
- oldmousey equ 2
- pointerx equ 4
- pointery equ 6
- icon_lit equ 8
- no_of_intros equ $a
- intros_first_line equ $c
- intros_step equ $e
- menu_mode equ $10
- intro_highlighted equ $12
- screen_offset equ $14
- next_page_top equ $16
- scroll_left equ $1a
- scroll_right equ $1c
- column_slice equ $1e
- last_page equ $20
- current_page_top equ $22
- first_page equ $26
- icon_selected equ $28
- drop_screen equ $2a
- drop_sin_index equ $2c
- nextpage_trig equ $2e
- prevpage_trig equ $30
- menu_trig equ $32
- newframe equ $34
- keypressed equ $36
- oldkey equ $37
- charnumber equ $38
- matchline equ $3a
- matchscreen equ $3c
- old_match_address equ $3e
- did_find equ $42
- start_of_section equ $44
- nearestmatchline equ $48
- nearestmatchpagetop equ $4a
- nearestmatchscreen equ $4c
- showsearchbox equ $50
- y_centre equ $52
- waitpage equ $54
- music_toggle equ $56
- fade_music equ $58
- fade_in_all equ $5a
- fade_out_all equ $5c
- quit equ $5e
- barpos equ $60
- searchplanes_on equ $62
- copirq_occured equ $64
- fadelpi equ $66
- load_intro equ $68
- presentspage equ $6a
-
- ;----------------------------------------------------------------------------
-
- routine: move.l #$dff000,a6
- move.l #$7fff7fff,$9a(a6)
- move.w #$8400,$96(a6)
- move.l _vbr,a2
- move.l #New_LEV3,$6c(a2)
- move.l #New_Lev2,$68(a2)
-
- move.l #outcast_vars,a5
- moveq #$3f,d7
- wipevars clr.w (a5)+
- dbf d7,wipevars
- move.l #textscreen-84,a5
- move.w #8693,d7
- wipets clr.w (a5)+
- dbf d7,wipets
- move.l #textplane2,a5
- move.w #6971,d7
- wipetp2 clr.w (a5)+
- dbf d7,wipetp2
-
- move.l #lpcols1+2,a5
- move.l #lpcols2+2,a4
- move.l #cop_cols1+2,a3
- move.l #cop_cols3+2,a2
- move.l #cop_pcols+2,a1
- move.w #15,d7
- cccloop1 clr.w (a5)
- clr.w (a4)
- clr.w (a3)
- clr.w (a2)
- clr.w (a1)
- addq.w #4,a5
- addq.w #4,a4
- addq.w #4,a3
- addq.w #4,a2
- addq.w #4,a1
- dbf d7,cccloop1
-
- move.l #cop_bcols+6,a5
- moveq #31,d7
- setbclp move.w #sbcol,(a5)
- add.w #20,a5
- dbf d7,setbclp
-
- bsr mt_init
- bsr INIT_FONTS
-
- move.l #cop_bpls1,a0
- move.l #cop_bpls3,a1
- move.l #topborder,d0
- move.l #bottomborder,d1
- moveq #3,d7
- initbpllp move.w d0,6(a0)
- swap d0
- move.w d0,2(a0)
- swap d0
- move.w d1,6(a1)
- swap d1
- move.w d1,2(a1)
- swap d1
- add.l #40,d0
- add.l #40,d1
- addq.l #8,a0
- addq.l #8,a1
- dbf d7,initbpllp
-
- move.l #cop_bpl2,a0
- move.l #textplane2,d0
- move.w d0,6(a0)
- swap d0
- move.w d0,2(a0)
-
- move.l #cop_spr,a0
- move.l #spr1,d0
- move.w d0,6(a0)
- swap d0
- move.w d0,2(a0)
- move.l #spr2,d0
- move.w d0,$e(a0)
- swap d0
- move.w d0,$a(a0)
-
- move.l #copper_bar,d0
- move.l #cop_skpln,a0
- move.w d0,$6(a0)
- swap d0
- move.w d0,$2(a0)
- move.l #copper_rtn,d0
- move.l #copper_bar,a0
- move.w d0,$6(a0)
- swap d0
- move.w d0,$2(a0)
- move.l #copper,d0
- move.l #cop_rstrt,a0
- move.w d0,$6(a0)
- swap d0
- move.w d0,$2(a0)
-
- moveq #1,d0
- moveq #0,d1
- bsr blit_button
- moveq #7,d0
- moveq #0,d1
- bsr blit_button
- moveq #8,d0
- moveq #1,d1
- bsr blit_button
- moveq #2,d0
- moveq #0,d1
- bsr blit_button
-
- move.l #lpbpls1,a0
- move.l #lpbpls2,a1
- move.l #outcastscreen,d0
- move.l #outcastscreen+(512/8*4),d1
- moveq #3,d7
- initlplp move.w d0,6(a0)
- swap d0
- move.w d0,2(a0)
- swap d0
- move.w d1,6(a1)
- swap d1
- move.w d1,2(a1)
- swap d1
- add.l #512/8,d0
- add.l #512/8,d1
- addq.l #8,a0
- addq.l #8,a1
- dbf d7,initlplp
-
- move.l #lpswap1,a0
- move.l #lpswap2,a1
- move.l #loadingpiccopper1,d0
- move.l #loadingpiccopper2,d1
- move.w d0,6(a1)
- swap d0
- move.w d0,2(a1)
- move.w d1,6(a0)
- swap d1
- move.w d1,2(a0)
-
- bsr drawinitpage
-
- move.l #cop_cols2+2,a5
- moveq #7,d7
- wcclp clr.w (a5)
- addq.w #4,a5
- dbf d7,wcclp
-
- include includes/dotplot_initcode_c.src
-
- move.w #$4000,mt_volscale
- move.l #$dff000,a6
- move.l #outcast_vars,a5
- move.w #1,presentspage(a5)
- move.b #$ff,keypressed(a5)
- move.w #34,fade_in_all(a5)
- move.w #$1,first_page(a5)
- move.w #$1,last_page(a5)
- move.w #$01fe,cop_doskp
- move.l #copper,$80(a6)
- clr.w $88(a6)
- move.w #$c038,$9a(a6)
-
- ;---------------------------------------------------------------------------
-
- waitloop move.l #outcast_vars,a5 ;main code loop
- tst.w newframe(a5)
- beq.s waitloop
- clr.w newframe(a5)
- bsr eachframetasks
- move.l #outcast_vars,a5
- tst.w quit(a5)
- beq waitloop
-
- jsr mt_end
- move.l _vbr,a2
- move.l #lev3phase2,$6c(A2) ;loading pic section
- move.l #$dff000,a0
- move.w #$7fff,$9a(a0)
- move.l #lacesynccopper,$80(a0)
- clr.w $88(a0)
- wlf1 btst #7,$4(a0)
- beq.s wlf1
- wlf2 btst #7,$4(a0)
- bne.s wlf2
- wlf3 btst #7,$4(a0)
- beq.s wlf2
- move.l #loadingpiccopper1,$80(a0)
- clr.w $88(a0)
- move.w #$c020,$9a(a0)
- waitloop2 move.l #outcast_vars,a5
- tst.w newframe(a5)
- beq.s waitloop2
- clr.w newframe(a5)
- bsr fadeloadpicin
- move.l #outcast_vars,a5
- addq.w #1,fadelpi(a5)
- cmpi.w #64,fadelpi(a5)
- bls.s waitloop2
- move.w load_intro(a5),d0
- subq.w #1,d0
- lsl.w #2,d0
- move.l #fn_addrs,a0
- move.l $00(a0,d0.w),filename
- rts
-
- ;---------------------------------------------------------------------------
-
- New_lev3 movem.l a0-a6/d0-d7,-(a7)
- andi.w #$10,$dff01e
- beq.s vbl
- bsr mt_music
- bsr highlight
- move.l #outcast_vars,a5
- move.w #1,copirq_occured(a5)
- move.w #$0010,$dff09c
- bra l3end
-
- vbl move.l #outcast_vars,a5
- move.w #1,newframe(a5)
- bsr update_screen_pos
- bsr dot_plotter
- bsr gen_searchbox
- move.w #$0020,$dff09c
- l3end movem.l (a7)+,a0-a6/d0-d7
- rte
-
- ;---------------------------------------------------------------------------
-
- Lev3phase2
-
- movem.l a0-a6/d0-d7,-(a7)
- move.l #outcast_vars,a5
- move.w #1,newframe(a5)
- move.w #$0020,$dff09c
- bra l3end
-
- ;---------------------------------------------------------------------------
-
- New_lev2:
-
- movem.l d0/a2,-(a7)
- move.l #$bfe001,a2
- btst #3,$d00(a2)
- beq nokey
-
- move.b #$48,$e00(a2)
- move.b #53,$400(a2) ;set timer lo
- move.b #00,$500(a2) ;set timer hi (starts counter)
- kciawlp2 btst #0,$e00(a2) ;wait for timeout
- bne.s kciawlp2
-
- bclr #6,$e00(a2)
- move.b $c00(a2),d0
- not.b d0
- ror.b #1,d0
- move.l #outcast_vars,a2
- move.b d0,keypressed(a2)
-
- nokey move.w #8,$dff09c
- movem.l (a7)+,d0/a2
- rte
-
- ;---------------------------------------------------------------------------
-
-
- eachframetasks:
-
- bsr screen_changes
- bsr mouse
- bsr pointer_sense
- bsr button_handler
- bsr scroll_text
- bsr music_fader
- bsr screen_fades
- rts
-
- ;---------------------------------------------------------------------------
-
- update_screen_pos:
-
- drop_x equ $c0
- drop_step equ 2
-
- movem.l a0-a6/d0-d7,-(a7)
- move.l #outcast_vars,a6
- tst.w waitpage(a6)
- beq.s nowp
- subq.w #1,waitpage(a6)
-
- nowp tst.w searchplanes_on(a6)
- bne sp_on
- move.l #cop_bpl1,a0
- move.l #textscreen+2,a1
- add.w screen_offset(a6),a1
- move.l a1,d0
- move.w d0,$6(a0)
- swap d0
- move.w d0,$2(a0)
- swap d0
- subi.l #84,d0
- move.l #cop_bpl2,a0
- move.w d0,$6(a0)
- swap d0
- move.w d0,$2(a0)
- swap d0
-
- sp_on tst.w drop_screen(a6)
- beq no_drop
- moveq #$48,d0
- move.w drop_sin_index(a6),d1
- lsl.w #1,d1
- move.l #sinetable,a2
- move.w $00(a2,d1.w),d1
- lsl.w #1,d1
- neg.w d1
- mulu #drop_x,d1
- swap d1
- add.w d1,d0
- move.w #$b200,cop_tstrt+6
- cmpi.w #$eb,d0
- bls.s pos_ok
- move.w #$ec,d0
- clr.w cop_tstrt+6
- pos_ok move.b d0,cop_tstrt
-
- no_drop move.w barpos(a6),d0
- move.l #copper_bar+8,a0
- lea $8(a0),a1
- moveq #$1f,d7
- hlloop move.b d0,(a0)
- move.b d0,(a1)
- add.w #$14,a0
- add.w #$14,a1
- addq.w #1,d0
- dbf d7,hlloop
- movem.l (a7)+,a0-a6/d0-d7
- rts
-
- ;---------------------------------------------------------------------------
-
- screen_changes
-
- movem.l a0-a6/d0-d7,-(a7)
- move.l #outcast_vars,a6
- tst.w drop_screen(a6)
- beq no_drop2
-
- add.w #drop_step,drop_sin_index(a6) ;screen dropped out of sight?
- cmp.w #178,drop_sin_index(a6)
- bne.s no_max_depth
- move.l #dot_vars,a5
- move.w #1,dospin(a5)
- clr.w presentspage(a6)
-
- tst.w menu_trig(a6) ;menu mode triggered?
- beq.s notsmenu
- clr.w screen_offset(a6)
- bsr create_intro_menu
- move.w #10,drop_sin_index(a6)
- bra no_drop2
-
- notsmenu move.w matchline(a6),d0 ;screen shown as result of search?
- beq notsf
- move.w matchscreen(a6),d0
- mulu #80,d0
-
- notsf move.l next_page_top(a6),a1
- move.l #textscreen+2,a0
- move.w d0,screen_offset(a6)
- add.w d0,a0
- bsr make_text_screen
- move.w #2,drop_sin_index(a6)
- bra no_drop2
-
- no_max_depth
- cmpi.w #90,drop_sin_index(a6)
- bne.s no_drop2
- clr.w drop_screen(a6)
- tst.w menu_trig(a6)
- beq.s no_mt
- clr.w menu_trig(a6)
- move.w #1,menu_mode(a6)
- no_mt move.w matchline(a6),d0
- beq no_drop2
- subq.w #1,d0
- lsl.w #3,d0
- add.b #$47,d0
- move.b d0,cop_hl1
- add.b #9,d0
- move.b d0,cop_hl2
-
- move.w #$0180,cop_hl1+4 ;highlight col 0
- move.w #$0180,cop_hl2+4 ;highlight col 0
- clr.w matchline(a6)
-
- no_drop2 movem.l (a7)+,a0-a6/d0-d7
- rts
-
- ;---------------------------------------------------------------------------
-
- mouse: move.l #$dff000,a0 ;read mouse - move pointer
- move.l #outcast_vars,a2
-
- move.b $a(a0),d0
- move.b $b(a0),d1
- move.b d0,d2
- move.b d1,d3
- sub.b oldmousex(a2),d0
- sub.b oldmousey(a2),d1
- ext.w d0
- ext.w d1
- add.w d0,pointery(a2)
- skp_y add.w d1,pointerx(a2)
- cmpi.w #$134,pointerx(a2)
- blt.s xinrr
- move.w #$134,pointerx(a2)
- xinrr tst.w pointerx(a2)
- bpl.s xinrl
- clr.w pointerx(a2)
- xinrl cmpi.w #$e0,pointery(a2)
- blt.s yinrb
- move.w #$e0,pointery(a2)
- yinrb tst.w pointery(a2)
- bpl.s yinrt
- clr.w pointery(a2)
- yinrt move.b d2,oldmousex(a2)
- move.b d3,oldmousey(a2)
-
- move.l #spr1,a3 ;put new coords in sprite
- move.w pointerx(a2),d0
- move.w pointery(a2),d1
- add.w #$80,d0
- add.w #$49,d1
- move.w d1,d2
- add.w #$f,d2
- move.b d1,(a3)
- move.b d2,$2(a3)
- move.w #$80,d4
- lsr.w #1,d0
- bcc.s nocarry
- or.w #1,d4
- nocarry move.b d0,$1(a3)
- btst #8,d1
- beq.s novstrt
- ori.w #4,d4
- novstrt btst #8,d2
- beq.s novstop
- ori.w #2,d4
- novstop move.b d4,$3(a3)
- move.l (a3),spr2
-
- skipxy tst.w intro_highlighted(a2)
- beq.s normb
- tst.w fade_out_all(a2)
- bne.s normb
- move.w intro_highlighted(a2),load_intro(a2)
- btst #6,$bfe001
- bne.s normb
- move.w #40,fade_out_all(a2)
- move.w #$fc00,fade_music(a2)
- normb rts
-
- ;---------------------------------------------------------------------------
-
- Pointer_sense
-
- moveq #0,d7
- move.l #outcast_vars,a0
- tst.w drop_screen(a0)
- bne noclick
- tst.w scroll_left(a0)
- bne noclick
- tst.w scroll_right(a0)
- bne noclick
-
- btst #6,$bfe001
- bne noclick
- move.l #buttonsensemask,a1
- move.w pointery(a0),d0
- sub.w #166,d0 ;text screen height
- bcs nobit3
- move.w pointerx(a0),d1
- lsr.w #1,d0
- lsr.w #1,d1
- move.w d1,d2
- andi.w #7,d2
- eori.w #7,d2
- mulu #(160/8)*4,d0
- add.w d0,a1
- lsr.w #3,d1
- add.w d1,a1
-
- btst d2,(a1)
- beq.s nobit0
- ori.w #1,d7
- nobit0 add.w #160/8,a1
- btst d2,(a1)
- beq.s nobit1
- ori.w #2,d7
- nobit1 add.w #160/8,a1
- btst d2,(a1)
- beq.s nobit2
- ori.w #4,d7
- nobit2 add.w #160/8,a1
- btst d2,(a1)
- beq.s nobit3
- ori.w #8,d7
- nobit3
-
- noclick move.w d7,icon_selected(a0)
- rts
-
- ;---------------------------------------------------------------------------
-
- blit_button:
-
- * D0 : button to draw 1-9
- * D1 : 1=select, 0=unselect
-
- movem.l a0-a6/d0-d7,-(a7)
- move.l #$dff000,a6
- move.l #$ffff0000,$44(a6) ;f/l word masks
-
- move.l #button_unselected_addrs,a0
- tst.w d1
- beq.s unsel
- move.l #button_selected_addrs,a0
- unsel move.l #buttonsizes_and_positions,a2
- subq.w #1,d0
- lsl.w #2,d0
- move.w d0,d1
- lsl.w #1,d1
- move.w 0(a2,d1.w),d2 ;size x
- lsr.w #3,d2 ;width in bytes
- move.w d2,d6 ;store byte width
- mulu 2(a2,d1.w),d2 ;* size y
- move.w d2,d4 ;store length of 1 plane
- lsl.w #2,d2 ;* 4 to find mask
- move.l 0(a0,d0.w),a1
- move.l a1,$4c(a6) ;source b - data
- add.w d2,a1
-
- move.l #bottomborder,a3
- move.w 4(a2,d1.w),d3 ;x plot pos
- move.w d3,d5
- move.w 6(a2,d1.w),d2 ;y pos
- mulu #40*4,d2
- lsr.w #4,d3
- lsl.w #1,d3
- add.w d3,a3
- add.w d2,a3 ;plot address
-
- and.w #$f,d5
- ror.w #4,d5
- move.w d5,$42(a6) ;bltcon1
- ori.w #$0fca,d5
- move.w d5,$40(a6) ;bltcon0
-
- addq.w #2,d6
- move.w #40*4,d5
- sub.w d6,d5
- move.w d5,$60(a6) ;mod c
- move.w d5,$66(a6) ;mod d
- move.w #$fffe,$62(a6) ;mod b
- move.w #$fffe,$64(a6) ;mod a
-
- move.w 2(a2,d1.w),d5 ;size y
- lsl.w #6,d5
- lsr.w #1,d6
- or.w d6,d5
-
- moveq #3,d7
- blitloop move.l a1,$50(a6) ;source a - mask
- move.l a3,$48(a6) ;source c
- move.l a3,$54(a6) ;dest d
- move.w d5,$58(a6)
- bsr blitwait
- add.w #40,a3
- dbf d7,blitloop
- movem.l (a7)+,a0-a6/d0-d7
- rts
-
- *----------------------------------------------------------------------------
-
- Create_intro_menu
-
- X_centre equ 320
- Y_line_spacing equ 2
- Modulo equ 84
-
- movem.l a0-a6/d0-d7,-(a7)
- bsr clear_main_screen
- move.l #cop_bpl2,a0
- move.l #textscreen-82,d0
- move.w d0,6(a0)
- swap d0
- move.w d0,2(a0)
-
- move.l #intros_banner,a1
- move.l a1,a3
- moveq #0,d1 ;count number of lines used by intro
- findlines move.b (a3)+,d0 ;menu banner, so that the centre of
- beq.s foundlnes ;the remaining space can be found
- cmpi.b #$a,d0
- bne.s findlines
- addq.w #1,d1
- bra findlines
- foundlnes mulu #9,d1
- move.w #166,d2
- sub.w d1,d2
- lsr.w #1,d2
- add.w d1,d2
- subq.w #1,d2
- move.l #Outcast_vars,a6
- move.w d2,y_centre(a6)
-
- move.l #textscreen+2,a0
- bsr make_text_screen
-
- move.l #Outcast_vars,a6
- clr.w screen_offset(a6)
- move.l #textscreen+2,plot_screen
- move.w #modulo,total_modulo
- move.w #0,use_font
-
- move.l #intros_text,a0
- moveq #0,d7 ;count number of intros
- move.l a0,a1
- lcntloop cmpi.b #$a,(a1)+
- bne.s lcntloop
- addq.w #1,d7
- cmp.b #"@",(a1)+
- bne.s lcntloop
- move.w d7,no_of_intros(a6)
-
- move.l #font_list,a1
- move.w use_font,d3
- mulu #3*4,d3
- move.l 0(a1,d3.w),a2
- move.w $2(a2),d0 ;height of this font
- add.w #y_line_spacing,d0
- move.w d0,d2
- move.w d0,intros_step(a6)
- mulu d7,d0 ;total height of intro text
- lsr.w #1,d0
- move.w y_centre(a6),d1
- sub.w d0,d1 ;y position of 1st line
- move.w d1,plotypos
- subq.w #2,d1
- move.w d1,intros_first_line(a6)
-
- move.l 8(a1,d3.w),a2
- sub.w #128,a2 ;char width list
- move.l a0,a3
- nxtmnuln bsr findpixlength
- lsr.w #1,d1
- move.w #x_centre,d0
- sub.w d1,d0
- move.w d0,plotxpos
- bsr type_text
- add.w d2,plotypos
- cmpi.b #"@",(a3)
- bne nxtmnuln
-
- move.l #copper_bar+8,a0
- move.w intros_step(a6),d0
- mulu #$14,d0
- move.w #$0088,-4(a0,d0.w)
- bsr setmenupalette
-
- movem.l (a7)+,a0-a6/d0-d7
- rts
-
- findpixlength:
-
- move.l a3,a0
- moveq #0,d1
- moveq #0,d0
- ftwid move.b (a3)+,d0
- cmp.b #$a,d0
- beq.s eol
- move.b 0(a2,d0.w),d0
- add.w d0,d1 ;total width
- add.w char_spacing,d1
- bra.s ftwid
- eol rts
-
- *----------------------------------------------------------------------------
-
- highlight
-
- move.l #outcast_vars,a6
- tst.w menu_mode(a6)
- bne.s go_hl
- rts
-
- go_hl moveq #0,d0
- move.w pointery(a6),d0
- sub.w intros_first_line(a6),d0
- bcs outrange
- divu intros_step(a6),d0
- move.w d0,d1
- addq.w #1,d1
- cmp.w no_of_intros(a6),d1
- bhi.s outrange
- move.w d1,intro_highlighted(a6)
- mulu intros_step(a6),d0
- add.w intros_first_line(a6),d0
- add.w #$48,d0
- move.w d0,barpos(a6)
- move.w #$0088,cop_doskp
- rts
-
- outrange move.w #$01fe,cop_doskp
- clr.w intro_highlighted(a6)
- rts
-
-
- ******************************************************************************
- *>>>>>>>>>>>>>>>>>>>>>>>>>> ANYFONT ROUTINE STARTS <<<<<<<<<<<<<<<<<<<<<<<<<<*
- ******************************************************************************
-
- * Any_Font plotter V1.00 (C) Phil!95/Neo 26/3/95...
-
- INIT_FONTS:
-
- movem.l a0-a6/d0-d7,-(a7)
- move.l #font_list,a6
- init_cset move.l $4(a6),a0
- move.l $8(a6),a1
- move.l (a6),a4
- move.l a4,d0 ;All fonts done?
- beq finitdone
- addq.w #4,a4
-
- move.w -4(a4),d0
- mulu -2(a4),d0
- add.l d0,a4 ;edge detect line
- moveq #0,d7 ;pixel pos
-
- moveq #0,d0
- nextpoint move.b (a0)+,d0
- beq csetdone
- move.w d0,d1
- lsl.w #1,d1
-
- move.w d7,(a1,d1.w) ;position of char
- findpoint addq.w #1,d7
- move.w d7,d6
- move.w d6,d5
- lsr.w #3,d6
- andi.w #7,d5
- eori.w #7,d5
- btst d5,(a4,d6.w)
- beq.s findpoint
-
- move.w d7,d6
- sub.w (a1,d1.w),d6
- move.b d6,-128(a1,d0.w) ;width of char
- bra nextpoint
- csetdone
- add.w #12,a6
- bra init_cset
-
- finitdone
- movem.l (a7)+,a0-a6/d0-d7
- rts
-
- *----------------------------------------------------------------------------
-
- TYPE_TEXT:
-
- move.w use_font,d0
- mulu #12,d0 ;access correct font tables
- nxt_char move.b (a0)+,d7
- cmpi.b #$a,d7
- bls.s text_done
- bsr PLOT_CHAR
- bra nxt_char
- text_done rts
-
- *----------------------------------------------------------------------------
-
- PLOT_CHAR:
-
- * D7 holds ASCII value of char to plot.
- * Vars: Plotxpos and plotypos hold plot position.
- * Total_modulo = y line offset
- * Char_spacing = (additional) character gap
- * Plot_screen = screen start address
-
-
- movem.l a0-a6/d0-d7,-(a7)
-
- move.l #font_list,a4
- move.l 0(a4,d0.w),a1
- addq.w #4,a1
- move.l Plot_screen,a2
- move.l $8(a4,d0.w),a3
- move.l #mask_list,a5
- move.l #$dff000,a6
-
- moveq #0,d0
- move.w plotypos,d0
- mulu total_modulo,d0
- add.l d0,a2
- move.w plotxpos,d1
- move.w d1,d2
- andi.w #$f,d2 ;char drop position 4 ls.bits
- lsr.w #4,d1
- lsl.w #1,d1
- add.w d1,a2 ;char drop word-aligned address
-
- andi.w #$ff,d7
- move.w d7,d6
- lsl.w #1,d6
- move.w 0(a3,d6.w),d6 ;char fetch position
- move.w d6,d3
- andi.w #$000f,d3 ;fetch position 4 ls.bits
- move.b -128(a3,d7.w),d7 ;char width
- add.w d7,plotxpos
-
- moveq #0,d5 ;Calc font_data source address
- move.w d6,d5
- lsr.w #4,d5
- lsl.w #1,d5
- add.l a1,d5
- move.l d5,$50(a6) ;Blitter source A (Font word addr)
-
- move.w d6,d5
- add.w d7,d5 ;right edge of char
- move.w d6,d0 ;copy left edge pos
- move.w d5,d1 ;copy right egde pos
- andi.w #$fff0,d0
- andi.w #$fff0,d1
- sub.w d0,d1
- lsr.w #4,d1
- addq.w #2,d1 ;gives total width of blit
- move.w d1,d0 ;back up word width
- lsl.w #1,d1
- neg.w d1
- move.w d1,$62(a6) ;Blitter modulo 'B' (font mask)
- lea $60(a5,d1.w),a4
- move.l a4,$4c(a6) ;Blitter source 'B' addr (font mask)
-
- andi.w #$f,d6
- lsl.w #1,d6
- andi.w #$f,d5
- lsl.w #1,d5
- move.w $00(a5,d6.w),$44(a6) ;Blitter FWM
- clr.w $46(a6) ;Blitter LWM
- move.w $20(a5,d5.w),$5c(a5) ;Right edge mask in place
-
- sub.w d3,d2 ;calc rotation (sub fetch from plot)
- bpl sameword
- subq.w #2,a2 ;back a word if minus
- sameword ror.w #4,d2
- andi.w #$f000,d2
- move.w d2,$42(a6) ;BLTCON1
- ori.w #$0fea,d2 ;D = A and B or C
- move.w d2,$40(a6) ;BLTCON 0 (source rotation)
- move.l a2,$48(a6) ;Blitter source C (Plot address)
- move.l a2,$54(a6) ;Blitter dest D ('' '')
-
- move.w total_modulo,d2
- add.w d1,d2
- move.w d2,$60(a6) ;Blitter Modulo C
- move.w d2,$66(a6) ;Blitter Modulo D
- move.w -4(a1),d2 ;get font width in bytes..
- add.w d1,d2
- move.w d2,$64(a6) ;Blitter Modulo A
-
- move.w -2(a1),d2 ;get font height
- lsl.w #6,d2
- or.w d0,d2
- move.w d2,$58(a6) ;Blitsize + go!
- bsr blitwait
- move.w char_spacing,d7
- add.w d7,plotxpos
-
- movem.l (a7)+,a0-a6/d0-d7
- rts
-
- ******************************************************************************
- *>>>>>>>>>>>>>>>>>>>>>>>>> ANYFONT ROUTINE ENDS! <<<<<<<<<<<<<<<<<<<<<<<<<<<<*
- ******************************************************************************
-
- Make_Text_Screen
-
- Maxlines equ 20
- Stsmod equ 84
-
- * A0 = Address of screen
- * A1 = Address of text
-
- movem.l a0-a6/d0-d7,-(a7)
- bsr clear_main_screen
- bsr settextpalette
- move.l #outcast_vars,a4
- clr.w first_page(a4)
- tst.b -2(a1)
- bne.s notfpage2
- move.w #1,first_page(a4)
-
- notfpage2 clr.w last_page(a4)
- move.l a1,current_page_top(a4)
-
- move.l a0,a2
- move.l #smallfont,a5
- moveq #0,d1
- strtln1 moveq #0,d0
-
- nschar1 moveq #0,d7
- move.b (a1)+,d7
- beq scend1
- cmpi.b #$a,d7
- beq.s cr1
- lsl.w #3,d7
- lea $00(a5,d7.w),a6
-
- move.b (a6)+,(a0)
- move.b (a6)+,stsmod(a0)
- move.b (a6)+,stsmod*2(a0)
- move.b (a6)+,stsmod*3(a0)
- move.b (a6)+,stsmod*4(a0)
- move.b (a6)+,stsmod*5(a0)
- move.b (a6)+,stsmod*6(a0)
- move.b (a6)+,stsmod*7(a0)
-
- addq.w #1,a0
- addq.w #1,d0
- cmpi.w #80,d0
- bne.s nschar1
- cmpi.b #$a,(a1) ;skip cr if 80 column line
- bne.s cr1
- addq.w #1,a1
-
- cr1 add.w #stsmod*8,a2
- move.l a2,a0
- addq.w #1,d1
- cmpi.w #maxlines,d1
- bne strtln1
- tst.b (a1)
- beq scend1
-
- mts_done move.l a1,next_page_top(a4)
- movem.l (a7)+,a0-a6/d0-d7
- rts
-
- scend1 move.w #1,last_page(a4)
- bra mts_done
-
- ;---------------------------------------------------------------------------
-
- Make_Buffer_Text_Screen
-
- Stsmodb equ 80
-
- * A0 = Address of screen
- * A1 = Address of text
-
- movem.l a0/a2-a6/d0-d7,-(a7)
- move.l #outcast_vars,a4
- clr.w first_page(a4)
- tst.b -2(a1)
- bne.s notfpage
- move.w #1,first_page(a4)
-
- notfpage move.l a0,a2
- move.l #smallfont,a5
- moveq #0,d1
- strtln2 moveq #0,d0
-
- nschar2 moveq #0,d7
- move.b (a1)+,d7
- beq scend2
- cmpi.b #$a,d7
- beq.s cr2
- lsl.w #3,d7
- lea $00(a5,d7.w),a6
-
- move.b (a6)+,(a0)
- move.b (a6)+,stsmodb(a0)
- move.b (a6)+,stsmodb*2(a0)
- move.b (a6)+,stsmodb*3(a0)
- move.b (a6)+,stsmodb*4(a0)
- move.b (a6)+,stsmodb*5(a0)
- move.b (a6)+,stsmodb*6(a0)
- move.b (a6)+,stsmodb*7(a0)
- addq.w #1,a0
- addq.w #1,d0
- cmpi.w #80,d0
- bne.s nschar2
- cmpi.b #$a,(a1) ;skip cr if 80 column line
- bne.s cr2
- addq.w #1,a1
-
- cr2 add.w #stsmodb*8,a2
- move.l a2,a0
- addq.w #1,d1
- cmpi.w #maxlines,d1
- bne strtln2
- tst.b (a1)
- beq scend2
-
- mbs_done movem.l (a7)+,a0/a2-a6/d0-d7
- rts
-
- scend2 move.w #1,last_page(a4)
- bra mbs_done
-
- ;---------------------------------------------------------------------------
-
- scroll_text:
-
- move.l #$dff000,a6
- move.l #outcast_vars,a5
-
- tst.w nextpage_trig(a5) ;next page requested?
- beq no_init_left
- clr.w nextpage_trig(a5)
-
- tst.w last_page(a5)
- bne no_init_left
- move.w #1,scroll_left(a5)
- clr.w column_slice(a5)
- clr.l old_match_address(a5)
- bsr waitcopirq
- move.b #$ec,cop_hl1 ;canel any match highlight bar
- move.b #$ec,cop_hl2
-
- move.w #nextpage_button,d0 ;select icon = on
- moveq #1,d1
- bsr blit_button
-
- move.l #textplane2,a0 ;clear screen
- move.l a0,$54(a6)
- move.l #$01000000,$40(a6)
- clr.w $66(a6)
- move.w #(166*64)+40,$58(a6)
- bsr blitwait
- move.l next_page_top(a5),a1 ;then type new text
- move.l a1,current_page_top(a5)
- bsr make_buffer_text_screen
- move.l a1,next_page_top(a5)
- bra no_init_right
-
- no_init_left
-
-
- tst.w prevpage_trig(a5) ;prev page requested?
- beq no_init_right
- clr.w prevpage_trig(a5)
-
- tst.w first_page(a5)
- bne no_init_right
- move.w #1,scroll_right(a5)
- clr.w column_slice(a5)
- clr.w last_page(a5)
- clr.l old_match_address(a5)
- bsr waitcopirq
- move.b #$ec,cop_hl1 ;cancel any match highlight bar
- move.b #$ec,cop_hl2
-
- moveq #20,d7 ;count back 20 lines to find
- moveq #$a,d0 ;prev page top addr
- move.l current_page_top(a5),a1
- countback cmp.b -(a1),d0
- bne.s countback
- subq.w #1,d7
- bpl.s countback
- addq.w #1,a1
- move.l a1,current_page_top(a5)
-
- move.w #prevpage_button,d0 ;select icon = on
- moveq #1,d1
- bsr blit_button
-
- move.l #textplane2,a0 ;clear screen
- move.l a0,$54(a6)
- move.l #$01000000,$40(a6)
- clr.w $66(a6)
- move.w #(166*64)+40,$58(a6)
- bsr blitwait
- bsr make_buffer_text_screen ;type new 'prev page' text
- move.l a1,next_page_top(a5)
-
- no_init_right
-
- clr.w nextpage_trig(a5)
- clr.w prevpage_trig(a5)
- tst.w scroll_left(a5)
- beq no_scroll_left
-
- move.w column_slice(a5),d0
- lsl.w #1,d0
- move.l #textplane2,a1
- add.w d0,a1
- move.l a1,$50(a6) ;source
-
- move.l #textscreen,a2
- add.w screen_offset(a5),a2
- addq.w #2,screen_offset(a5)
- clr.w (a2) ;clear top line
- add.w #82,a2
- move.l a2,$54(a6) ;dest
-
- move.l #-1,$44(a6)
- move.l #$09f00000,$40(a6)
- move.w #80-2,$64(a6)
- move.w #84-2,$66(a6)
- move.w #(165*64)+1,$58(a6)
- bsr blitwait
- addq.w #1,column_slice(a5)
- cmpi.w #40,column_slice(a5)
- bne.s sl_notend
- clr.w scroll_left(a5)
- move.w #nextpage_button,d0
- clr.w d1
- bsr blit_button
- move.w #5,waitpage(a5)
- sl_notend rts
-
-
- no_scroll_left
-
- move.l #outcast_vars,a5
- tst.w scroll_right(a5)
- beq.s no_scroll_right
-
- moveq #39,d0
- sub.w column_slice(a5),d0
- lsl.w #1,d0
- move.l #textplane2,a1
- add.w d0,a1
- move.l a1,$50(a6) ;source
-
- move.l #textscreen,a2
- add.w screen_offset(a5),a2
- subq.w #2,screen_offset(a5)
- clr.w 82(a2) ;clear top line
- move.l a2,$54(a6) ;dest
-
- move.l #-1,$44(a6)
- move.l #$09f00000,$40(a6)
- move.w #80-2,$64(a6)
- move.w #84-2,$66(a6)
- move.w #(165*64)+1,$58(a6)
- bsr blitwait
- addq.w #1,column_slice(a5)
- cmpi.w #40,column_slice(a5)
- bne.s sr_notend
- clr.w scroll_right(a5)
- move.w #prevpage_button,d0
- clr.w d1
- bsr blit_button
- move.w #5,waitpage(a5)
- sr_notend rts
-
-
- no_scroll_right
-
- rts
-
- ;---------------------------------------------------------------------------
-
- button_handler
-
- prevpage_button equ 1
- menu_button equ 2
- messages_button equ 3
- adverts_button equ 4
- news_button equ 5
- info_button equ 6
- nextpage_button equ 7
- music_button equ 8
- search_button equ 9
-
- move.l #outcast_vars,a5
- move.w icon_selected(a5),d2
-
- cmpi.w #messages_button,d2
- bne.s not_msgs
- move.l #messages,d0
- bra newtextfixed
- not_msgs cmpi.w #adverts_button,d2
- bne.s not_advs
- move.l #adverts,d0
- bra newtextfixed
- not_advs cmpi.w #news_button,d2
- bne.s not_news
- move.l #news,d0
- bra newtextfixed
- not_news cmpi.w #info_button,d2
- bne.s not_info
- move.l #info,d0
- bra newtextfixed
-
- not_info tst.w menu_mode(a5) ;no scrolling if in menu mode!
- bne notsearch
- tst.w scroll_right(a5)
- bne.s not_np
- tst.w scroll_left(a5)
- bne.s not_np
-
- cmpi.b #$4f,keypressed(a5)
- beq.s key_prev
- cmpi.w #prevpage_button,d2
- bne not_pp
- key_prev tst.w waitpage(a5)
- bne.s not_pp
- move.w #1,prevpage_trig(a5)
- rts
-
- not_pp cmpi.b #$4e,keypressed(a5)
- beq.s key_next
- cmpi.w #nextpage_button,d2
- bne not_np
- key_next tst.w waitpage(a5)
- bne.s not_np
- move.w #1,nextpage_trig(a5)
- rts
-
- not_np cmpi.w #menu_button,d2
- bne.s not_menu
- cmp.w icon_lit(a5),d2
- beq.s not_menu
- move.w #1,menu_trig(a5)
- move.w icon_lit(a5),d0
- clr.w d1
- bsr blit_button
- move.w d2,d0
- move.w d0,icon_lit(a5)
- moveq #1,d1
- bsr blit_button
- move.w #1,drop_screen(a5)
- move.w #90,drop_sin_index(a5)
- bsr waitcopirq
- move.b #$ec,cop_hl1 ;canel any match highlight bar
- move.b #$ec,cop_hl2
-
- not_menu tst.w presentspage(a5)
- bne notsearch
- tst.w scroll_left(a5)
- bne notsearch
- tst.w scroll_right(a5)
- bne notsearch
- cmpi.b #$21,keypressed(a5)
- bne.s nopress_s
- move.w #search_button,d2
- nopress_s cmpi.w #search_button,d2 ;search?
- bne notsearch
- move.w d2,d0
- moveq #1,d1
- bsr blit_button
- bsr search_bitplane_fix
-
- clr.w did_find(a5)
- bsr waitcopirq
- move.b #$ec,cop_hl1
- move.b #$ec,cop_hl2
- bsr underboxstore
- move.w #26,showsearchbox(a5)
- bsr setboxpalette
- waitsear tst.w showsearchbox(a5) ;wait for box to appear
- bne.s waitsear
-
- move.l #oldsearchstring,a2
- move.l #searchstring,a4 ;print old search string
- clr.w d0
- clr.w d1
- potlp move.b (a4)+,d0
- move.b d0,(a2)+
- tst.b d0
- beq nxtchr
- bsr printschar
- addq.w #1,d1
- bra potlp
-
- nxtchr move.w #"*",d0 ;print cursor
- move.w charnumber(a5),d1
- bsr printschar
-
- keyup btst #7,keypressed(a5)
- bne.s keyup
- clr.w d0
- move.b keypressed(a5),d0
- move.b d0,oldkey(a5)
-
- cmpi.b #$45,d0
- beq cancelsearch
- cmpi.b #$44,d0 ;return?
- beq gotstring
- cmpi.b #$41,d0 ;delete?
- bne.s notdel
-
- move.l #searchstring,a3
- move.w charnumber(a5),d1
- subq.b #1,d1
- bmi samekey ;cannot delete if pos 0
- clr.b $00(a3,d1.w)
- moveq #" ",d0
- move.w charnumber(a5),d1 ;erase cursor character
- bsr printschar
- subq.w #1,charnumber(a5)
- bra samekey
-
- notdel cmpi.w #20,charnumber(a5)
- beq samekey
-
- move.l #keycodetable,a6
- move.b $00(a6,d0.w),d0 ;ascii character
- beq samekey
-
- move.l #searchstring,a3
- move.w charnumber(a5),d1
- move.b d0,$00(a3,d1.w)
- clr.w d1
- move.w charnumber(a5),d1
- bsr printschar
- addq.w #1,charnumber(a5)
-
- samekey move.b keypressed(a5),d0
- cmp.b oldkey(a5),d0
- beq.s samekey
- bra nxtchr
-
- gotstring
-
- move.l #searchstring,a3 ;null terminate string
- move.w charnumber(a5),d1
- clr.b $00(a3,d1.w)
-
- move.l #oldsearchstring,a2 ;compare with orig string
- move.l #searchstring,a4 ;if not same `old match address`
- cmplp1 move.b (a2)+,d0 ;becomes irrelevant.
- beq scan_text
- cmp.b (a4)+,d0
- beq cmplp1
- clr.l old_match_address(a5)
-
- scan_text:
-
- move.l start_of_section(a5),a2
- move.b (a3),d7 ;1st char
- moveq #0,d6 ;page numeber where match found
- newpage moveq #0,d0 ;line where '' '' ''
- move.l a2,a4 ;page top of section where '' ''
-
- srchlp move.b (a2),d2
- beq endofsearch
- cmpi.b #"A"-1,d2 ;fix chars to lower case
- bls.s nocsch
- cmpi.b #"Z",d2
- bhi.s nocsch
- add.b #32,d2
- nocsch cmp.b d7,d2
- beq.s foundchar
- cmpi.b #$a,d2
- beq.s foundcr
- contsrch addq.w #1,a2
- bra srchlp
-
- foundchar
- move.l a2,a6
- move.l #searchstring,a3 ;now see if rest of string matches
- compchars addq.w #1,a6
- addq.w #1,a3
- move.b (a3),d3 ;last char of search string?
- beq foundmatch
- move.b (a6),d2 ;Fix uppercase chars to lower
- cmpi.b #"A"-1,d2
- bls.s nocsch2
- cmpi.b #"Z",d2
- bhi.s nocsch2
- add.b #32,d2
- nocsch2 cmp.b d2,d3
- bne contsrch
- bra compchars
-
- foundcr addq.w #1,d0
- cmpi.w #maxlines,d0
- bne contsrch
- addq.w #1,d6
- addq.w #1,a2
- bra newpage
-
- endofsearch:
-
- tst.w did_find(a5) ;if not matches made past original
- beq cancelsearch ;pos just show that prev pos
- move.w nearestmatchscreen(a5),d6
- move.w nearestmatchline(a5),d0
- move.l nearestmatchpagetop(a5),a4
- bra showfind
-
- foundmatch:
-
- cmp.l current_page_top(a5),a2 ;ignore matches on previous screens
- blt contsrch
-
- move.w #1,did_find(a5)
- move.w d6,nearestmatchscreen(a5)
- move.w d0,nearestmatchline(a5)
- move.l a4,nearestmatchpagetop(a5)
-
- cmp.l old_match_address(a5),a2
- bls contsrch
- move.l a2,old_match_address(a5)
-
- showfind move.w d6,matchscreen(a5)
- cmp.l current_page_top(a5),a4
- bne.s notfsamepage
-
- lsl.w #3,d0
- add.b #$47,d0
- move.b d0,cop_hl1
- add.b #9,d0
- move.b d0,cop_hl2
-
- move.w #$0180,cop_hl1+4 ;highlight col 0
- move.w #$0180,cop_hl2+4 ;highlight col 0
- bra cancelsearch
-
- notfsamepage
-
- addq.w #1,d0
- move.w d0,matchline(a5)
- move.l a4,a1
- move.l a1,next_page_top(a5)
- move.w #1,drop_screen(a5)
- move.w #90,drop_sin_index(a5)
- move.b #$ec,cop_hl1
- move.b #$ec,cop_hl2
-
- cancelsearch:
-
- move.w #search_button,d0
- clr.w d1
- bsr blit_button
- bsr waitnewframe
- move.w #$0001,cop_scrl+2
- clr.w searchplanes_on(a5)
- bsr settextpalette
- move.l #undersearchbox,a2
- move.l #textscreen+(84*68)+28,a1
- add.w screen_offset(a5),a1
- moveq #38,d7
- ylp2 moveq #12,d6
- xlp2 move.w (a2)+,(a1)+
- dbf d6,xlp2
- add.w #84-26,a1
- dbf d7,ylp2
- rts
-
- notsearch:
- cmpi.b #$37,keypressed(a5)
- bne.s nopress_m
- move.w #music_button,d2
- nopress_m cmpi.w #music_button,d2
- bne.s notmusic
- tst.w fade_music(a5)
- bne.s notmusic
- eori.w #1,music_toggle(a5)
- bne.s f_up
- move.w #$ff00,fade_music(a5)
- move.w #8,d0
- move.w #0,d1
- bsr blit_button
- bra notmusic
- f_up move.w #$0100,fade_music(a5)
- move.w #8,d0
- move.w #1,d1
- bsr blit_button
-
- notmusic rts
-
-
- newtextfixed:
-
- clr.l old_match_address(a5)
- move.l d0,start_of_section(a5)
- move.l d0,next_page_top(a5)
- clr.w menu_mode(a5)
- move.w icon_lit(a5),d0
- clr.w d1
- bsr blit_button
- move.w d2,d0
- moveq #1,d1
- bsr blit_button
- move.w #1,drop_screen(a5)
- move.w #90,drop_sin_index(a5)
- move.w d2,icon_lit(a5)
- clr.w icon_selected(a5)
- bsr waitcopirq
- move.b #$ec,cop_hl1 ;canel any match highlight bar
- move.b #$ec,cop_hl2
- rts
-
-
- ;---------------------------------------------------------------------------
-
- clear_main_screen
-
- movem.l a4-a6,-(a7)
- move.l #outcast_vars,a4
- move.l #$dff000,a6
- move.l #textscreen-84,a5
- move.l a5,$54(a6) ;clear screen
- move.l #$01000000,$40(a6)
- clr.w $66(a6)
- move.w #(207*64)+42,$58(a6)
- bsr blitwait
- movem.l (a7)+,a4-a6
- rts
-
- ;---------------------------------------------------------------------------
-
- printschar
- movem.l a3/a4/d0,-(a7)
- move.l #textscreen+(84*93)+31,a4 ;plots char in search box
- add.w screen_offset(a5),a4
- add.w d1,a4
- move.l #smallfont,a3
- and.w #$ff,d0
- cmpi.b #"a"-1,d0 ;ensure only capitals plotted
- bls.s nocchng
- sub.w #32,d0
- nocchng lsl.w #3,d0
- add.w d0,a3
- move.b (a3)+,(a4)
- move.b (a3)+,stsmod(a4)
- move.b (a3)+,stsmod*2(a4)
- move.b (a3)+,stsmod*3(a4)
- move.b (a3)+,stsmod*4(a4)
- move.b (a3)+,stsmod*5(a4)
- move.b (a3)+,stsmod*6(a4)
- move.b (a3)+,stsmod*7(a4)
- movem.l (a7)+,a3/a4/d0
- rts
-
- ;---------------------------------------------------------------------------
-
- gen_searchbox:
-
- move.l #outcast_vars,a5
- move.w showsearchbox(a5),d1
- beq nobox
- subq.w #2,d1
- move.l #searchbox,a0
- move.l #textscreen+(84*68)+28,a1
- move.l #textplane2+(84*68)+28,a2
- add.w screen_offset(a5),a1
- add.w d1,a0
-
- evenloop cmpi.b #25,d1
- bhi.s evendone
- move.l a0,a4
- move.l a1,a6
- move.l a2,a3
- moveq #19,d7
- evenlp2 move.w (a4),(a6)
- move.w 26(a4),(a3)
- lea 84*2(a3),a3
- lea 84*2(a6),a6
- lea 26*4(a4),a4
- dbf d7,evenlp2
- addq.w #2,a0
- addq.w #2,a1
- addq.w #2,a2
- addq.w #2,d1
- bra.s evenloop
- evendone
-
-
- move.l #textscreen+(84*69)+28,a3
- move.l #textplane2+(84*69)+28,a2
- add.w screen_offset(a5),a3
- move.l #searchbox+(26*2),a0
- move.w showsearchbox(a5),d1
- subq.w #2,d1
- add.w d1,a3
- add.w d1,a2
-
- oddloop cmpi.b #25,d1
- bhi.s odddone
- move.l a0,a4
- move.l a2,a1
- move.l a3,a6
- moveq #18,d7
- oddlp2 move.w (a4),(a6)
- move.w 26(a4),(a1)
- lea 84*2(a6),a6
- lea 84*2(a1),a1
- lea 26*4(a4),a4
- dbf d7,oddlp2
- addq.w #2,a0
- addq.w #2,a2
- addq.w #2,a3
- addq.w #2,d1
- bra.s oddloop
- odddone
-
- subq.w #2,showsearchbox(a5)
- nobox rts
-
- ;---------------------------------------------------------------------------
-
- setboxpalette:
-
- movem.l a0-a1/d7,-(a7)
- move.l #searchboxpalette,a0
- move.l #cop_cols2+$6,a1
- moveq #6,d7
- sbploop move.w (a0)+,(a1)
- addq.w #4,a1
- dbf d7,sbploop
- movem.l (a7)+,a0-a1/d7
- rts
-
- ;---------------------------------------------------------------------------
-
- settextpalette:
-
- movem.l a0-a1/d7,-(a7)
- move.l #normaltextpalette,a0
- move.l #cop_cols2+$6,a1
- moveq #6,d7
- sbploop2 move.w (a0)+,(a1)
- addq.w #4,a1
- dbf d7,sbploop2
- movem.l (a7)+,a0-a1/d7
- rts
-
- ;---------------------------------------------------------------------------
-
- setmenupalette:
-
- movem.l a0-a1/d7,-(a7)
- move.l #menupalette,a0
- move.l #cop_cols2+$6,a1
- moveq #6,d7
- sbploop3 move.w (a0)+,(a1)
- addq.w #4,a1
- dbf d7,sbploop3
- movem.l (a7)+,a0-a1/d7
- rts
-
- ;---------------------------------------------------------------------------
-
- blitwait btst #6,$2(a6)
- bne.s blitwait
- rts
-
- ;---------------------------------------------------------------------------
-
- waitnewframe
-
- move.l a5,-(a7)
- move.l #outcast_vars,a5
- waiting tst.w newframe(a5)
- beq.s waiting
- clr.w newframe(a5)
- move.l (a7)+,a5
- rts
-
- ;---------------------------------------------------------------------------
-
- waitcopirq
-
- move.l a5,-(a7)
- move.l #outcast_vars,a5
- clr.w copirq_occured(a5)
- waiting2 tst.w copirq_occured(a5)
- beq.s waiting2
- clr.w copirq_occured(a5)
- move.l (a7)+,a5
- rts
-
- ;---------------------------------------------------------------------------
-
- underboxstore
-
- movem.l a2/a1/d6/d7,-(a7)
- move.l #undersearchbox,a2
- move.l #textscreen+(84*68)+28,a1
- add.w screen_offset(a5),a1
- moveq #38,d7
- ylp3 moveq #12,d6
- xlp3 move.w (a1)+,(a2)+
- dbf d6,xlp3
- add.w #84-26,a1
- dbf d7,ylp3
- movem.l (a7)+,a2/a1/d6/d7
- rts
-
- ;---------------------------------------------------------------------------
-
- music_fader:
-
- move.l #outcast_vars,a5
- move.w fade_music(a5),d0
- add.w d0,mt_volscale
- tst.w mt_volscale
- bpl.s botvolok
- clr.w mt_volscale
- clr.w fade_music(a5)
- bra topvolok
- botvolok cmpi.w #$3fff,mt_volscale
- bls.s topvolok
- move.w #$4000,mt_volscale
- clr.w fade_music(a5)
- topvolok rts
-
-
- ;---------------------------------------------------------------------------
-
- search_bitplane_fix
-
- move.l #outcast_vars,a5
- move.l #$dff000,a6
- move.l #$00000000,$44(a6)
- clr.l $64(a6)
- clr.w $62(a6)
- move.l #$2d300000,$40(a6)
- move.l #textscreen,a1
- add.w screen_offset(a5),a1
- move.l a1,$4c(a6) ;b source
- sub.w #84,a1
- move.l a1,$50(a6) ;a source
- move.l #textplane2,$54(a6) ;d dest
- move.w #(166*64)+42,$58(a6)
- bsr blitwait
-
- move.w #1,searchplanes_on(a5)
- move.l #textplane2+2,d0
- move.l #cop_bpl2,a0
- move.w d0,$6(a0)
- swap d0
- move.w d0,$2(a0)
- clr.w cop_scrl+2
- rts
-
-
- ;---------------------------------------------------------------------------
-
- fade_out_routine
-
- move.l d0,-(a7)
- fadeoloop tst.b (a5) ;fade a copper palette at a5 to black
- beq.s reddown ;d7 = number of colours to fade - 1
- subq.b #1,(a5)
- reddown move.b $1(a5),d0
- andi.b #$f0,d0
- beq.s greendown
- sub.b #$10,$1(a5)
- greendown move.b $1(a5),d0
- andi.b #$0f,d0
- beq.s bluedown
- subq.b #$1,$1(a5)
- bluedown addq.w #4,a5
- dbf d7,fadeoloop
- move.l (a7)+,d0
- rts
-
- ;---------------------------------------------------------------------------
-
- fade_in_routine
-
- movem.l d0/d1,-(a7)
- fadeiloop move.b (a6),d0 ;fade up a copper palette at a5 to match
- cmp.b (a5),d0 ;palette words at a6
- beq.s reddup ;d7 = number of colours to fade up
- addq.b #1,(a5)
-
- reddup move.b $1(a6),d0
- andi.b #$f0,d0
- move.b $1(a5),d1
- andi.b #$f0,d1
- cmp.b d0,d1
- beq.s greenup
- add.b #$10,$1(a5)
-
- greenup move.b $1(a6),d0
- andi.b #$f,d0
- move.b $1(a5),d1
- andi.b #$f,d1
- cmp.b d0,d1
- beq.s blueup
- addq.b #$1,$1(a5)
-
- blueup addq.w #4,a5
- addq.w #2,a6
- dbf d7,fadeiloop
- movem.l (a7)+,d0/d1
- rts
-
- ;---------------------------------------------------------------------------
-
- screen_fades:
-
- move.l #outcast_vars,a0
- tst.w fade_in_all(a0)
- beq nofia
- subq.w #1,fade_in_all(a0)
- btst #0,fade_in_all+1(a0)
- beq nofia
- move.l #cop_cols1+2,a5
- move.l #bdrpalette,a6
- moveq #15,d7
- bsr fade_in_routine
- move.l #cop_pcols+2,a5
- move.l #pointerpalette,a6
- moveq #15,d7
- bsr fade_in_routine
- move.l #cop_cols3+2,a5
- move.l #bdrpalette,a6
- moveq #15,d7
- bsr fade_in_routine
- move.l #cop_cols2+6,a5
- move.l #normaltextpalette,a6
- moveq #6,d7
- bsr fade_in_routine
- rts
-
- nofia tst.w fade_out_all(a0)
- beq nofoa
- subq.w #1,fade_out_all(a0)
- bne.s noquit
- move.w #1,quit(a0)
- noquit btst #0,fade_out_all+1(a0)
- beq nofia
- move.l #cop_cols1+2,a5
- moveq #15,d7
- bsr fade_out_routine
- move.l #cop_pcols+2,a5
- moveq #15,d7
- bsr fade_out_routine
- move.l #cop_cols3+2,a5
- moveq #15,d7
- bsr fade_out_routine
- move.l #cop_cols2+6,a5
- moveq #6,d7
- bsr fade_out_routine
- move.l #cop_bcols+6,a5
- moveq #31,d6
- cbf_loop moveq #0,d7
- bsr fade_out_routine
- add.w #$10,a5
- dbf d6,cbf_loop
- nofoa rts
-
- ;---------------------------------------------------------------------------
-
- fadeloadpicin:
-
- btst #0,fadelpi+1(a5)
- beq.s nfpi
- move.l #loadingpicpalette,a6
- move.l #lpcols1+2,a5
- moveq #15,d7
- bsr fade_in_routine
- move.l #loadingpicpalette,a6
- move.l #lpcols2+2,a5
- moveq #15,d7
- bsr fade_in_routine
- nfpi rts
-
- ;---------------------------------------------------------------------------
-
- ExecBase = 4
- OpenLibrary = -408
- CloseLibrary = -414
- Execute = -222
-
-
- Loadexe: Lea DosName,a1
- Clr.l d0
- Move.l ExecBase,a6
- Jsr OpenLibrary(A6)
- Move.l D0,DosBase
- Move.l FileName,D1
- Clr.l D2
- Clr.l D3
- Move.l DosBase,a6
- Jsr Execute(A6)
- clr.l d0
-
- CloseDos: Move.l ExecBase,a6
- Move.l DosBase,a1
- Jsr CloseLibrary(A6)
- Rts
-
- DosName: Dc.b 'dos.library',0
- Even
- DosBase: dc.l 0
- Filename dc.l 0
-
- ;---------------------------------------------------------------------------
-
- drawinitpage:
-
- lineoneoffset equ 6
-
- move.l #initpagebanner,a1
- move.l #textscreen+2,a0
- bsr make_text_screen
-
- move.l #textscreen+2,plot_screen
- move.w #modulo,total_modulo
- move.w #0,use_font
- move.l #font_list,a1
- move.w use_font,d3
- mulu #3*4,d3
- move.l 0(a1,d3.w),a2
- move.w $2(a2),d2 ;height of this font
- add.w #y_line_spacing,d2
- move.l 8(a1,d3.w),a2
- sub.w #128,a2 ;char width list
- move.w #lineoneoffset,plotypos
- move.l #initpagetext,a0
- move.l a0,a3
- nxtfpln bsr findpixlength
- lsr.w #1,d1
- move.w #x_centre,d0
- sub.w d1,d0
- move.w d0,plotxpos
- bsr type_text
- add.w d2,plotypos
- cmpi.b #"@",(a3)
- bne nxtfpln
- rts
-
- ;---------------------------------------------------------------------------
-
- include includes/dotplot_routine_c.src
-
- ;---------------------------------------------------------------------------
-
- *****************************************************************************
-
- include includes/pt-play+volscale.src
-
- *****************************************************************************
-
- section datastuff,data
-
- ;---------------------------------------------------------------------------
-
-
- outcast_vars:
-
- dcb.w $40,0
-
- button_unselected_addrs:
-
- dc.l button1u,button2u,button3u,button4u,button5u,button6u
- dc.l button7u,button8u,button9u
-
- button_selected_addrs:
-
- dc.l button1s,button2s,button3s,button4s,button5s,button6s
- dc.l button7s,button8s,button9s
-
- buttonsizes_and_positions:
-
- * size: x/y | plotpos x/y
-
- dc.w 48,24,54,26
- dc.w 32,50,103,11
- dc.w 96,20,119,7
- dc.w 80,18,124,27
- dc.w 64,17,130,45
- dc.w 32,50,187,12
- dc.w 48,24,232,26
- dc.w 32,15,279,26
- dc.w 32,16,279,41
-
- bdrpalette:
-
- include data/borderpalette.src
-
- searchbox:
-
- incbin data/searchbox208x39x2b.raw
-
- smallfont:
- dcb.b 32*8,0
- incbin data/font6.bin
- dcb.b 32*8,0
- incbin data/chars160-255.bin
- even
-
- ;---------------------------------------------------------------------------
-
- Intros_banner:
-
- incbin text/intro_menu_banner.txt
- dc.b 0
- even
-
- Intros_text:
- incbin text/intro_list.txt
- dc.b 0
- even
-
- ;---------------------------------------------------------------------------
- ************* FILELENGTH OF BANNERS MUST BE AN EVEN NUMBER!! ***************
- ;---------------------------------------------------------------------------
- dc.b $0,$a ;MUST PROCEED TEXT FILE
- MESSAGES: incbin text/messages_banner.txt
- incbin text/messages.txt
- dc.b 0,0,0,0 ;MUST FOLLOW TEXT FILE
- even
- ;---------------------------------------------------------------------------
- dc.b $0,$a ;MUST PROCEED TEXT FILE
- ADVERTS: incbin text/adverts_banner.txt
- incbin text/adverts.txt
- dc.b 0,0,0,0 ;MUST FOLLOW TEXT FILE
- even
- ;---------------------------------------------------------------------------
- dc.b $0,$a ;MUST PROCEED TEXT FILE
- NEWS: incbin text/news_banner.txt
- incbin text/news.txt
- dc.b 0,0,0,0 ;MUST FOLLOW TEXT FILE
- even
- ;---------------------------------------------------------------------------
- dc.b $0,$a ;MUST PROCEED TEXT FILE
- INFO: incbin text/info_banner.txt
- incbin text/info.txt
- dc.b 0,0,0,0 ;MUST FOLLOW TEXT FILE
- even
- ;---------------------------------------------------------------------------
-
- initpagetext: incbin text/firstpagetext.txt
- even
- initpagebanner: incbin text/firstpagebanner.txt
- dc.b 0
- even
- ;---------------------------------------------------------------------------
-
- Sinetable: incbin data/sin-costable.data
-
- Keycodetable: incbin data/keycode-ascii.table
-
- Searchstring: dcb.b 32,0
- OldSearchstring: dcb.b 32,0
- even
-
- ;----------------------------------------------------------------------------
-
- textshadow_col equ $0824
- menushadow_col equ $0824
- dots_col equ $0957
- sbcol equ $0957 ;Select bar colour
-
- searchboxpalette:
-
- dc.w dots_col
- dc.w $0fff
- dc.w $0fff ;text+dots
- dc.w textshadow_col
- dc.w textshadow_col ;text shadow+dots
- dc.w $0745 ;box colour
- dc.w $0745 ;box+dots
- dc.w $0fff
-
- normaltextpalette:
-
- dc.w dots_col
- dc.w $0fff
- dc.w $0fff
- dc.w textshadow_col
- dc.w textshadow_col
- dc.w $0fff
- dc.w $0fff
- dc.w $0fff
-
- menupalette:
-
- dc.w dots_col
- dc.w $0fff
- dc.w $0fff
- dc.w menushadow_col
- dc.w dots_col
- dc.w $0fff
- dc.w $0fff
- dc.w $0fff
-
- pointerpalette:
-
- dc.w $0000
- dc.w $0FFF
- dc.w $0FEE
- dc.w $0EDD
- dc.w $0DBB
- dc.w $0DAB
- dc.w $0B89
- dc.w $0A78
- dc.w $0967
- dc.w $0856
- dc.w $0745
- dc.w $0634
- dc.w $0533
- dc.w $0422
- dc.w $0312
- dc.w $0211
-
-
- loadingpicpalette:
-
- dc.w $0000
- dc.w $0EEE
- dc.w $0013
- dc.w $0023
- dc.w $0024
- dc.w $0135
- dc.w $0246
- dc.w $0247
- dc.w $0358
- dc.w $0468
- dc.w $0679
- dc.w $078A
- dc.w $08AB
- dc.w $0ABC
- dc.w $0CCD
- dc.w $0DDD
-
- ;---------------------------------------------------------------------------
-
- filenames:
-
- fn0 dc.b "NEO->OUTCAST<-NEO:0",0
- fn1 dc.b "NEO->OUTCAST<-NEO:1",0
- fn2 dc.b "NEO->OUTCAST<-NEO:2",0
- fn3 dc.b "NEO->OUTCAST<-NEO:3",0
- fn4 dc.b "NEO->OUTCAST<-NEO:4",0
- fn5 dc.b "NEO->OUTCAST<-NEO:5",0
- fn6 dc.b "NEO->OUTCAST<-NEO:6",0
- fn7 dc.b "NEO->OUTCAST<-NEO:7",0
- fn8 dc.b "NEO->OUTCAST<-NEO:8",0
- fn9 dc.b "NEO->OUTCAST<-NEO:9",0
- even
-
- fn_addrs dc.l fn0,fn1,fn2,fn3,fn4,fn5,fn6,fn7,fn8,fn9
-
- ;---------------------------------------------------------------------------
-
- include includes/dotplot_nonchipdata.src
-
- ;---------------------------------------------------------------------------
- section chipstuff,data_c
- ;---------------------------------------------------------------------------
-
- copper dc.l $0101ff00,$01004200,$01020000,$01040024
- dc.l $008e2c81,$00902cc1,$00920038,$009400d0
- dc.l $01080078,$010a0078,$01fc0000,$01060000
-
- cop_spr dc.l $01200000,$01220000,$01240000,$01260000
- dc.l $01280000,$012a0000,$012c0000,$012e0000
- dc.l $01300000,$01320000,$01340000,$01360000
- dc.l $01380000,$013a0000,$013c0000,$013e0000
-
- cop_bpls1 dc.l $00e00000,$00e20000,$00e40000,$00e60000
- dc.l $00e80000,$00ea0000,$00ec0000,$00ee0000
-
- cop_cols1 dc.l $01800000,$01820000,$01840000,$01860000
- dc.l $01880000,$018A0000,$018C0000,$018E0000
- dc.l $01900000,$01920000,$01940000,$01960000
- dc.l $01980000,$019A0000,$019C0000,$019E0000
-
- cop_pcols dc.l $01a00000,$01a20000,$01a40000,$01a60000
- dc.l $01a80000,$01aa0000,$01ac0000,$01ae0000
- dc.l $01b00000,$01b20000,$01b40000,$01b60000
- dc.l $01b80000,$01ba0000,$01bc0000,$01be0000
-
- ;--------------------------------------------------------------------------
-
- dc.l $4601ff00,$01000000
- dot_bpln dc.l $00e00000,$00e20000
- dc.l $4701ff00,$01009200
-
- cop_scrl dc.l $01020001,$01040024,$01fc0000,$01060000
- dc.l $008e2c81,$00902cc1,$0092003c,$009400d4
- dc.l $01080004,$010a0004
-
- cop_bpl1 dc.l $00e40000,$00e60000
- cop_bpl2 dc.l $00e80000,$00ea0000
-
- cop_cols2 dc.w $0180,$0000
- dc.w $0182,$0000
- dc.w $0184,$0000
- dc.w $0186,$0000
- dc.w $0188,$0000
- dc.w $018a,$0000
- dc.w $018c,$0000
- dc.w $018e,$0000
-
- cop_tstrt dc.l $4801ff00,$0100b200 ;<- Blanked by drop screen if ness
-
- cop_skpln dc.l $00800000,$00820000 ;Copper branch address
- cop_doskp dc.l $00880000 ;00880000 = branch 01fe0000 = not
-
- copper_rtn
-
- cop_hl1 dc.l $ec01ff00,$01840745
- cop_hl2 dc.l $ec01ff00,$01840000
-
- ;---------------------------------------------------------------------------
-
- dc.l $ed01ff00,$01000000
-
- cop_bpls3 dc.l $00e00000,$00e20000,$00e40000,$00e60000
- dc.l $00e80000,$00ea0000,$00ec0000,$00ee0000
-
- dc.l $01020000,$01040024
- dc.l $008e2c81,$00902cc1,$00920038,$009400d0
- dc.l $01080078,$010a0078,$01fc0000,$01060000
-
- cop_cols3 dc.l $01800000,$01820000,$01840000,$01860000
- dc.l $01880000,$018A0000,$018C0000,$018E0000
- dc.l $01900000,$01920000,$01940000,$01960000
- dc.l $01980000,$019A0000,$019C0000,$019E0000
-
- dc.l $ee01ff00,$01004200
-
- dc.l $ffdffffe,$0e01ff00
- dc.l $009c8010
-
- cop_rstrt dc.l $00800000,$00820000,$fffffffe
-
- ;---------------------------------------------------------------------------
-
- copper_bar
-
- dc.l $00800000,$00820000
-
- cop_bcols dc.w $7045,$fffe,$0180,sbcol,$70cd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $7145,$fffe,$0180,sbcol,$71cd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $7245,$fffe,$0180,sbcol,$72cd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $7345,$fffe,$0180,sbcol,$73cd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $7445,$fffe,$0180,sbcol,$74cd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $7545,$fffe,$0180,sbcol,$75cd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $7645,$fffe,$0180,sbcol,$76cd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $7745,$fffe,$0180,sbcol,$77cd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $7845,$fffe,$0180,sbcol,$78cd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $7945,$fffe,$0180,sbcol,$79cd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $7a45,$fffe,$0180,sbcol,$7acd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $7b45,$fffe,$0180,sbcol,$7bcd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $7c45,$fffe,$0180,sbcol,$7ccd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $7d45,$fffe,$0180,sbcol,$7dcd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $7e45,$fffe,$0180,sbcol,$7ecd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $7f45,$fffe,$0180,sbcol,$7fcd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $8045,$fffe,$0180,sbcol,$80cd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $8145,$fffe,$0180,sbcol,$81cd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $8245,$fffe,$0180,sbcol,$82cd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $8345,$fffe,$0180,sbcol,$83cd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $8445,$fffe,$0180,sbcol,$84cd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $8545,$fffe,$0180,sbcol,$85cd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $8645,$fffe,$0180,sbcol,$86cd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $8745,$fffe,$0180,sbcol,$87cd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $8845,$fffe,$0180,sbcol,$88cd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $8945,$fffe,$0180,sbcol,$89cd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $8a45,$fffe,$0180,sbcol,$8acd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $8b45,$fffe,$0180,sbcol,$8bcd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $8c45,$fffe,$0180,sbcol,$8ccd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $8d45,$fffe,$0180,sbcol,$8dcd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $8e45,$fffe,$0180,sbcol,$8ecd,$fffe,$0180,$0000,$01fe,$0000
- dc.w $8f45,$fffe,$0180,sbcol,$8fcd,$fffe,$0180,$0000,$0088,$0000
-
-
- ;---------------------------------------------------------------------------
-
- loadingpiccopper1
-
- dc.l $0101ff00,$0100c204,$01020000,$01040024
- dc.l $008e68a1,$0090efa1,$0092004c,$009400c4
-
- dc.l $01200000,$01220000,$01240000,$01260000
- dc.l $01280000,$012a0000,$012c0000,$012e0000
- dc.l $01300000,$01320000,$01340000,$01360000
- dc.l $01380000,$013a0000,$013c0000,$013e0000
-
- lpbpls1 dc.l $00e00000,$00e20000,$00e40000,$00e60000
- dc.l $00e80000,$00ea0000,$00ec0000,$00ee0000
-
- lpcols1 dc.l $01800000,$01820000,$01840000,$01860000
- dc.l $01880000,$018A0000,$018C0000,$018E0000
- dc.l $01900000,$01920000,$01940000,$01960000
- dc.l $01980000,$019A0000,$019C0000,$019E0000
- dc.l $010801c0,$010a01c0
-
- lpswap1 dc.l $00800000,$00820000,$fffffffe
-
-
- loadingpiccopper2
-
- dc.l $0101ff00,$0100c204,$01020000,$01040024
- dc.l $008e68a1,$0090efa1,$0092004c,$009400c4
-
- dc.l $01200000,$01220000,$01240000,$01260000
- dc.l $01280000,$012a0000,$012c0000,$012e0000
- dc.l $01300000,$01320000,$01340000,$01360000
- dc.l $01380000,$013a0000,$013c0000,$013e0000
-
- lpbpls2 dc.l $00e00000,$00e20000,$00e40000,$00e60000
- dc.l $00e80000,$00ea0000,$00ec0000,$00ee0000
-
- lpcols2 dc.l $01800000,$01820000,$01840000,$01860000
- dc.l $01880000,$018A0000,$018C0000,$018E0000
- dc.l $01900000,$01920000,$01940000,$01960000
- dc.l $01980000,$019A0000,$019C0000,$019E0000
- dc.l $010801c0,$010a01c0
-
- lpswap2 dc.l $00800000,$00820000,$fffffffe
-
-
- *****************************************************************************
-
- lacesynccopper:
-
- dc.l $0101ff00,$01000204,$01020000,$01040024
- dc.l $fffffffe
-
- *****************************************************************************
-
-
-
-
- pointersprite:
-
- spr1: dc.w $0000,$0000
- dc.w $E000,$3000
- dc.w $9800,$EC00
- dc.w $6600,$BB00
- dc.w $D980,$5EC0
- dc.w $2E60,$4FB0
- dc.w $6A18,$2A6C
- dc.w $11C6,$201B
- dc.w $3EB8,$114C
- dc.w $0514,$1AFE
- dc.w $184C,$0FFD
- dc.w $012D,$0FFE
- dc.w $0CF2,$06F4
- dc.w $0264,$0768
- dc.w $0508,$0090
- dc.w $0090,$0260
- dc.w $0260,$0040
- dc.w $0040,$0000
- dc.w $0000,$0000
-
- spr2: dc.w $0000,$0080
- dc.w $E000,$1000
- dc.w $9800,$0400
- dc.w $4600,$8100
- dc.w $E180,$8040
- dc.w $3060,$4010
- dc.w $7598,$4004
- dc.w $1FE6,$2001
- dc.w $3FF8,$2004
- dc.w $0FEC,$1002
- dc.w $1FF4,$1003
- dc.w $07F9,$0803
- dc.w $0EF2,$090E
- dc.w $0264,$059C
- dc.w $0508,$07F8
- dc.w $0090,$02F0
- dc.w $0220,$0260
- dc.w $0040,$0040
- dc.w $0000,$0000
-
- ;---------------------------------------------------------------------------
-
- topborder: incbin data/topborder320x28.raw
-
- bottomborder: incbin data/bottomborder320x62.raw
-
- buttonsensemask: incbin data/iconsensemask_160x31x4.rawblit
-
- undersearchbox: dcb.b (208/8)*39,0
-
- button1u incbin data/leftarrow_48x24selected.raw
- button1s incbin data/leftarrow_48x24unselected.raw
-
- button2u incbin data/menu_32x50unselected.raw
- button2s incbin data/menu_32x50selected.raw
-
- button3u incbin data/messages_96x20unselected.raw
- button3s incbin data/messages_96x20selected.raw
-
- button4u incbin data/adverts_80x18unselected.raw
- button4s incbin data/adverts_80x18selected.raw
-
- button5u incbin data/news_64x17unselected.raw
- button5s incbin data/news_64x17selected.raw
-
- button6u incbin data/info_32x50unselected.raw
- button6s incbin data/info_32x50selected.raw
-
- button7u incbin data/rightarrow_48x24selected.raw
- button7s incbin data/rightarrow_48x24unselected.raw
-
- button8u incbin data/music_32x15unselected.raw
- button8s incbin data/music_32x15selected.raw
-
- button9u incbin data/search_32x16unselected.raw
- button9s incbin data/search_32x16selected.raw
-
- *----------------------------------------------------------------------------
-
- mask_list dc.w $ffff,$7fff,$3fff,$1fff,$0fff,$07ff,$03ff,$01ff
- dc.w $00ff,$007f,$003f,$001f,$000f,$0007,$0003,$0001
- dc.w $0000,$8000,$c000,$e000,$f000,$f800,$fc00,$fe00
- dc.w $ff00,$ff80,$ffc0,$ffe0,$fff0,$fff8,$fffc,$fffe
- mask_line dc.w $ffff,$ffff,$ffff,$ffff,$ffff,$ffff,$ffff,$ffff
- dc.w $ffff,$ffff,$ffff,$ffff,$ffff,$ffff,$ffff,$0000
- *----------------------------------------------------------------------------
-
- plotxpos dc.w 0
- plotypos dc.w 0
- char_spacing dc.w 0
- total_modulo dc.w 40
- plot_screen dc.l 0
- use_font dc.w 0
-
- FONT_LIST
- dc.l fnt_data0,fnt_ord0,fnt_pos0
- * dc.l fnt_data1,fnt_ord1,fnt_pos1
- * dc.l fnt_data2,fnt_ord2,fnt_pos2 ;uncomment as applic...
- * dc.l fnt_data3,fnt_ord3,fnt_pos3 ;uncomment as applic...
-
- dc.l $0 ;= NO MORE FONTS!
-
- *(FOR EACH FONT)-------------------------------------------------------------
-
- fnt_data0 dc.w 832/8;width in bytes
- dc.w 13 ;height (excluding extra 'dot-line')
-
- incbin data/fontdata832x13.raw ;actual raw font
- dc.w $ffff ;in case of missing last dot
-
- fnt_ord0 dc.b " !",$22,"$%^&*()_-+=\/<>.,@#:;{}[]","'","?" ;In same order as raw font
- dc.b "abcdefghijklmnopqrstuvwxyz"
- dc.b "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
- dc.b $00 ;Null terminated.
- even
-
- dcb.b 128,0
- fnt_pos0 dcb.w 128,0
-
- *----------------------------------------------------------------------------
- dcb.b 84,0
-
- textscreen:
-
- dcb.l ((672/8)*(166+60))/4,0 ;text+scroll buffer (enough for 60
- ;pages
- textplane2:
-
- dcb.l (((672/8)*166)/4),0
-
- *----------------------------------------------------------------------------
-
- include includes/dotplot_chipdata.src
-
- *----------------------------------------------------------------------------
-
- outcastscreen: incbin data/outcastlogo511x272.raw
-
- *----------------------------------------------------------------------------
-
-
- *****************************************************************************
-
- PACK_NUMBER equ $01
-
- mt_data: incbin "music/mod.outcast"
-
- *****************************************************************************
-